Pandas:将pandas groupby的结果合并回DataFrame |
您所在的位置:网站首页 › pandas count和groupby一起用 › Pandas:将pandas groupby的结果合并回DataFrame |
Pandas:将pandas groupby的结果合并回DataFrame
在数据分析领域中,Pandas是一个非常流行的Python库。我们可以使用Pandas对数据进行处理,以便更轻松地分析它们。其中,groupby()是一个十分有用的函数,可以让我们对数据进行分组。但是,使用groupby()函数后,我们有时候需要将处理后的结果重新合并回原始的DataFrame中。本文将介绍如何将pandas groupby的结果合并回DataFrame。 阅读更多:Pandas 教程 什么是pandas groupby函数?首先,让我们来介绍一下groupby()函数。该函数可以按照我们指定的列或者多列,对数据集进行分组。例如,我们可以使用下面的代码对数据集进行分组: import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500, 7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']) print(grouped.mean())输出结果如下: Salary Name Gender Amy F 6250.0 John M 5250.0 Mike M 4500.0 Ann F 7000.0这里,我们对数据集按照”Name”和”Gender”两列进行了分组。接着,我们计算了每个分组的平均工资,并使用mean()函数输出了结果。 将pandas groupby的结果合并回DataFrame现在,我们已经知道如何使用groupby()函数进行数据分组。但是,当我们需要将处理后的结果重新合并回原始的DataFrame中时,应该如何实现呢?下面将介绍三种不同的方法: 方法一:使用merge()函数使用merge()函数可以将groupby结果重新合并到原始DataFrame中。例如,我们可以使用下面的代码实现: import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500, 7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']).mean().reset_index() merged = pd.merge(df, grouped, on=['Name', 'Gender'], how='left') print(merged)输出结果如下: Name Gender Salary_x Salary_y 0 John M 5000 5250.0 1 Amy F 6000 6250.0 2 Mike M 4500 4500.0 3 Ann F 7000 7000.0 4 John M 5500 5250.0 5 Amy F 6500 6250.0这里,我们使用merge()函数将原始的DataFrame和groupby()处理后的结果进行合并。关于merge()函数的详细用法,可以查看Pandas官方文档。 方法二:使用transform()函数另一种将pandas groupby的结果合并回DataFrame的方法是使用transform()函数。transform()函数可以将分组操作的结果转换为原始数据集的形式,并且可以应用于任何pandas函数,例如mean()、std()等。下面是一个例子: import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500,7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']) df['Mean Salary'] = grouped['Salary'].transform('mean') print(df)输出结果如下: Name Gender Salary Mean Salary 0 John M 5000 5250.0 1 Amy F 6000 6250.0 2 Mike M 4500 4500.0 3 Ann F 7000 7000.0 4 John M 5500 5250.0 5 Amy F 6500 6250.0这里,我们对数据集按照”Name”和”Gender”两列进行了分组。接着,我们通过transform()函数将分组处理后的结果转换为原始数据集的形式,并添加了一个新列”Mean Salary”,其中存储了每个分组的平均工资。 方法三:使用apply()函数apply()函数是另一种将pandas groupby的结果合并回DataFrame的方法。我们可以定义一个函数来操作分组的结果,并将它应用于原始的DataFrame。下面是一个例子: import pandas as pd data = {'Name': ['John', 'Amy', 'Mike', 'Ann','John', 'Amy'], 'Gender': ['M', 'F', 'M', 'F', 'M', 'F'], 'Salary': [5000, 6000, 4500, 7000, 5500, 6500]} df = pd.DataFrame(data) grouped = df.groupby(['Name', 'Gender']) def add_mean_salary(group): mean_salary = group['Salary'].mean() group['Mean Salary'] = mean_salary return group df = grouped.apply(add_mean_salary).reset_index(drop=True) print(df)输出结果如下: Name Gender Salary Mean Salary 0 Amy F 6000 6250.0 1 Amy F 6500 6250.0 2 Ann F 7000 7000.0 3 John M 5000 5250.0 4 John M 5500 5250.0 5 Mike M 4500 4500.0这里,我们定义了一个函数add_mean_salary()来操作分组的结果。在该函数中,我们计算了每个分组的平均工资,并添加了一个新列”Mean Salary”。接着,我们使用apply()函数对原始数据集进行操作,并通过reset_index()函数重新设置索引。 总结在本文中,我们介绍了如何将pandas groupby的结果合并回DataFrame中。我们介绍了三种不同的方法,包括使用merge()函数、transform()函数和apply()函数。这些方法都可以将处理后的结果重新合并回原始的DataFrame中。在实际的数据分析中,我们应该根据具体情况选择合适的方法。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |